package cn.dengta.webapp.trade.model;

import cn.dengta.common.model.ValueProxy;
import cn.dengta.context.model.LabelI18nProxy;
import lombok.Getter;
import me.codeplayer.util.X;

import static cn.dengta.context.model.TradeEnumI18nKey.*;

/**
 * 支付业务类型：1=充值钻石；2=VIP充值；3=购买提升搭讪推荐曝光率服务；4=积分兑换；5=群VIP充值
 */
@Getter
public enum PayType implements LabelI18nProxy<PayType, Integer> {

	/** 充值 */
	COIN(1, PAY_TYPE_COIN, true),
	/** VIP充值 */
	VIP(2, PAY_TYPE_VIP, true),
	/** 购买提升搭讪推荐曝光率服务 */
	GREET_UP(3, PAY_TYPE_GREET_UP, true),
	/** 积分兑换 */
	INTEGRAL_EXCHANGE(4, PAY_TYPE_INTEGRAL_EXCHANGE, false),
	/** 群VIP */
	GROUP_VIP(5, PAY_TYPE_GROUP_VIP, true);
	//
	;
	boolean show;
	final ValueProxy<PayType, Integer> proxy;

	PayType(Integer value, String label, boolean show) {
		this.show = show;
		this.proxy = new ValueProxy<>(this, value, label);
	}

	public static PayType[] getValues() {
		return ValueProxy.getCachedArray(PayType.class, PayType::values);
	}

	public static PayType of(Integer value) {
		return COIN.getValueOf(value);
	}

	public static PayType getWithDefault(Integer code) {
		return X.mapElse(code, PayType::of, PayType.COIN);
	}

}
